<template>
  <FIButton v-bind="{ ...restBinds, ...$attrs }" @click="handleReset" iconBtnName="icon-zhongzhi"
    ><span v-if="text">{{ text }}</span></FIButton
  >
</template>
<script setup lang="ts">
import { computed, defineEmits, ref } from 'vue'
const props = defineProps({
  // 重置数据
  modelValue: {
    type: Object,
    requried: true,
  },
  text: {
    type: String,
    default: '',
  },
  // 重置排除字段
  resetExcludeValues: {
    type: Array,
    default: () => [],
  },
  restBinds: {
    type: Object,
    default: () => {
      return {
        style: { width: '32px' },
      }
    },
  },
})
// 创建一个计算属性，实现v-model双向绑定
// 创建一个计算属性，实现v-model双向绑定
const localModelValue = ref(props.modelValue)
const resetData = computed({
  get() {
    return localModelValue.value
  },
  set(newValue) {
    emit('update:modelValue', newValue)
  },
})
// 抛出事件
const emit = defineEmits(['update:modelValue', 'handleReset'])

// const handleReset = () => {
//   console.log('resetData-------', resetData)
//   const outKeys = ['dynamicParams', 'orderbyParams', 'size']
//   Object.keys(resetData.value).forEach((key: any) => {
//     if (!outKeys.includes(key)) {
//       resetData[key] = ''
//     } else {
//       if (key == 'dynamicParams') {
//         // 传参值置空
//         Array.isArray(resetData[key]) &&
//           resetData.value[key].forEach((item) => {
//             item.val = []
//           })
//         // 列数据 绑定值置空
//         // Array.isArray(columns) &&
//         //   columns.forEach((item: any) => {
//         //     if (item.showHighSearch === true) {
//         //       item.modelValue.inputValue = ''
//         //       item.modelValue.isBlank = false
//         //       item.modelValue.notBlank = false
//         //     }
//         //   })
//         console.log('state.query[key]-------', key, resetData.value)
//       }
//     }
//   })
//   emit('update:modelValue', localModelValue.value)
// }
const handleReset = () => {
  const outKeys = ['dynamicParams', 'orderbyParams', 'size', 'current', ...props.resetExcludeValues]
  Object.keys(localModelValue.value).forEach((key) => {
    if (!outKeys.includes(key)) {
      localModelValue.value[key] = ''
    } else if (key == 'dynamicParams') {
      // 传参值置空
      Array.isArray(localModelValue.value[key]) &&
        localModelValue.value[key].forEach((item) => {
          item.val = []
        })
      // 这里假设columns是全局变量或者props，如果需要改变它，也需要使用相应的ref或computed
      // ...
    }
  })
  emit('update:modelValue', localModelValue.value)
  emit('handleReset')
}
</script>
